from rest_framework import permissions


class IsOwerReadOnly(permissions.BasePermission):
    """自定义权限：只允许对象的所有者能够编辑"""

    # 重写has_object_permission(self, request, view,obj)
    def has_object_permission(self, request, view, obj):
        """
        self：指向类的实例，通常在类方法中使用。
        request：表示当前的HTTP请求。它包含了请求的信息，如请求方法、用户等。
        view：指代当前视图（或视图集），可以用来获取视图相关的信息。
        obj：指代要检查权限的对象。通常是数据库中的一个实例，比如某个特定的文章或用户。

        :param request:
        :param view:
        :param obj:
        :return:boolean
        """
        if request.method in permissions.SAFE_METHODS:  # 如果当前请求方法是 GET、HEAD 或 OPTIONS
            return True
        # 对象的所有者才有操作权限
        return obj.auther == request.user
